📝 概念结构与逻辑结构设计 · 习题课

📚 第13章配套练习 ⏱️ 预计 50 分钟 📝 纯纸笔题,无上机 🎨 含画图练习
🎯 本节练习目标
  • 能识别 E-R 图的三大元素和三种联系类型
  • 会画 E-R 图(给需求描述,画出完整 E-R 图)
  • 会做转换(把 E-R 图转换成关系模式)
  • 会做 综合大题:从需求 → E-R 图 → 关系模式

📌 答题前先看:解题三件套

本章题目类型固定,记住下面三件套,画图和转换都不慌:

🎯 画 E-R 图三步走
  1. 找实体:需求描述里"事物"是什么?画矩形。
  2. 找属性:每个实体有哪些"特征"?画椭圆。主码加下划线
  3. 找联系:实体之间的"动作"是什么?画菱形。标 1:1 / 1:n / m:n
🎯 转换关系模式三步走
  1. 每个实体 → 一个关系模式(属性照搬,主码加下划线)
  2. 看每个联系类型
  • 1:1 → 把任一方主键加到另一方做外键
  • 1:n → 把"1 端"主键加到"n 端"做外键
  • m:n必须新建一张表!主键是两个实体主键的组合
  1. 检查:实体没漏?联系没漏?主码标了?
⚠️ 三个最容易丢分的地方

主码不加下划线 —— 答案不完整

m:n 联系忘记新建表 —— 直接错

1:n 转换时把外键加错位置 —— 应该是"1 端主键加到 n 端",不是反过来

📝 第一部分 · 概念巩固10 分钟

先用几道选择题把核心概念过一遍。

练习 1.1 ⭐ 基础 三大元素图形

在 E-R 图中,下列对应关系 错误 的是?

📖 查看答案

✅ 答案:D 错误

主码是在属性的椭圆下加下划线来标记的,没有"圆形 → 主码"这种说法。

记住口诀:"矩形装实体,椭圆装属性,菱形装联系"。E-R 图就这三种图形,没有圆形。

练习 1.2 ⭐⭐ 中等 联系类型判断

下列 4 个场景,分别属于哪种联系类型?请在心里配对。

① 公民 ↔ 身份证号

② 班级 ↔ 学生

③ 学生 ↔ 社团(一个学生可加多个社团,一个社团有多个学生)

④ 学校 ↔ 校长(一个学校只有一个校长)

选项:A. 1:1 | B. 1:n | C. m:n

📖 查看答案

① 公民 ↔ 身份证号 → 1:1(一个人一个身份证号,一个身份证号属于一个人)

② 班级 ↔ 学生 → 1:n(一个班级多个学生,一个学生只属于一个班级)

③ 学生 ↔ 社团 → m:n(一个学生加多个社团,一个社团有多个学生)

④ 学校 ↔ 校长 → 1:1(一个学校一个校长,一个校长管一个学校)

💡 判断方法:问自己 "A 中的 1 个,对应 B 中几个?" "B 中的 1 个,对应 A 中几个?" 两个答案组合就是结果。

练习 1.3 ⭐⭐ 必考 转换规则

关于 E-R 图转换为关系模式,下列说法 正确 的是?

📖 查看答案

✅ 答案:C

口诀:"1:1 合并、1:n 加外键、m:n 必须建新表"

A 错:1:1 不需要新建表,把一方主键加到另一方做外键即可

B 错:1:n 也不需要新建表,把"1 端"主键加到"n 端"做外键即可

C 对:m:n 必须新建表!这是必考点

D 错:联系的属性必须保留,加到对应的关系模式中

练习 1.4 ⭐⭐ 中等 1:n 外键位置

"班级"和"学生"是 1:n 联系(一个班级多个学生)。转换为关系模式时,外键应该怎么加?

📖 查看答案

✅ 答案:B

规则:1:n 联系,把"1 端"的主键加到"n 端"

① 班级是"1"端(一个班级),班级号是 1 端的主键

② 学生是"n"端(多个学生)

③ 把"班级号"加到"学生"表里做外键

这样每个学生记录里就指明了"我属于哪个班级"。反过来加是错的,一个班级有多个学生,没法在班级表里只放一个学号。

练习 1.5 ⭐⭐ 中等 实体 vs 属性

假设要设计一个"图书"信息系统,要描述:图书的书名、出版社的名称、出版社的地址、出版社的联系电话。"出版社"应该作为什么

📖 查看答案

✅ 答案:B · 独立实体

判断标准:"出版社"自己有更细的描述(地址、联系电话),所以应该作为独立的实体。

对比:

① 如果只是"图书.出版社名称" → 出版社可以是属性

② 如果出版社还有地址、电话等 → 必须独立成实体(避免冗余 + 方便管理)

这种"出版社"和"图书"是 1:n 联系(一个出版社出版多本书)。

🎨 第二部分 · 画 E-R 图15 分钟 · 必考

本部分是 必考画图题请准备纸笔,先自己画一遍,再看答案对照

练习 2.1 🎨 画图 1:n 简单题

根据下面的需求,画出完整的 E-R 图:

📋 需求描述
  1. 班级:班级号、班级名、人数
  2. 学生:学号、姓名、性别、年龄
  3. 一个班级有多个学生,一个学生只属于一个班级
📖 查看答案

解题分析:

第一步:找实体

"班级"和"学生"是两个实体。

第二步:找属性

班级 → 班级号(主码)、班级名、人数
学生 → 学号(主码)、姓名、性别、年龄

第三步:判断联系

一个班级 → 多个学生(n)
一个学生 → 一个班级(1)
所以是 1:n 联系,可以叫"属于"或"包含"。

班级 班级号 班级名 人数 包含 1 学生 n 学号 姓名 性别 年龄

班级与学生的 E-R 图(1:n 联系)

💡 注意点:班级号、学号下面要画下划线(表示主码)。

练习 2.2 🎨 画图 m:n + 联系属性

某图书馆借阅系统,根据下面的需求,画出完整的 E-R 图:

📋 需求描述
  1. 读者:读者编号、姓名、电话
  2. 图书:ISBN、书名、作者
  3. 一个读者可以借多本书,一本书可以被多个读者借(不同时间)
  4. 每次借阅会记录 借阅日期(这是联系的属性)
📖 查看答案

解题分析:

第一步:找实体

"读者"和"图书"是两个实体。

第二步:找属性

读者 → 读者编号(主码)、姓名、电话
图书 → ISBN(主码)、书名、作者

第三步:判断联系

一个读者 → 多本书(m)
一本书 → 多个读者(n)
所以是 m:n 联系,叫"借阅"。

⚠️ 关键点:联系本身有属性 "借阅日期",记得画上!

读者 读者编号 姓名 电话 借阅 m 借阅日期 图书 n ISBN 书名 作者

读者与图书的 E-R 图(m:n 联系,"借阅日期"是联系的属性)

💡 易错提醒:联系自带的"借阅日期"属性 挂在菱形下面,不是挂在某个实体下面!

练习 2.3 🎨 画图 ⭐ 综合多实体

根据下面的需求,画出完整的 E-R 图(含 3 个实体、2 个联系):

📋 需求描述
  1. 学生:学号、姓名、年龄
  2. 课程:课程号、课程名、学分
  3. 教师:工号、姓名、职称
  4. 一个学生可以选多门课,一门课可以被多个学生选,每次选课有一个 成绩
  5. 一个教师可以讲授多门课,但每门课只由一个教师讲授
📖 查看答案

解题分析:

三个实体

学生、课程、教师

两个联系

学生 - 课程:"选修",m:n,有属性"成绩"

教师 - 课程:"讲授",1:n(一个教师讲多门课,一门课一个教师)

学生 学号 姓名 年龄 选修 m 成绩 课程 n 课程号 课程名 学分 讲授 n 教师 1 工号 姓名 职称

学生-课程-教师 综合 E-R 图(m:n + 1:n 两种联系)

💡 注意

① "讲授"是 1:n 联系(教师 1 端,课程 n 端)

② "选修"是 m:n 联系,有属性"成绩"

③ 三个实体的主码(学号、课程号、工号)都加下划线

📋 第三部分 · 转换关系模式10 分钟 · 必考

本部分练习 "E-R 图 → 关系模式" 的转换。口诀:1:1 合并、1:n 加外键、m:n 必须建新表。

练习 3.1 ⭐⭐ 必考 1:n 转换

把练习 2.1 的"班级与学生" E-R 图转换成关系模式(标出主码)。

📖 查看答案

转换步骤:

第一步:每个实体 → 关系模式
班级(班级号, 班级名, 人数)
学生(学号, 姓名, 性别, 年龄)
第二步:处理 1:n 联系

口诀:"1 端的主键加到 n 端"。班级是 1 端,学生是 n 端,所以 班级号 加到学生表里:

✅ 最终结果(2 张表)
班级(班级号, 班级名, 人数)
学生(学号, 姓名, 性别, 年龄, 班级号

学生表里的"班级号"是 外键(蓝色高亮),引用班级表的主键。

练习 3.2 ⭐⭐ 必考 m:n 转换

把练习 2.2 的"读者与图书" E-R 图转换成关系模式。

📖 查看答案

转换步骤:

第一步:每个实体 → 关系模式
读者(读者编号, 姓名, 电话)
图书(ISBN, 书名, 作者)
第二步:处理 m:n 联系(关键!)

口诀:"m:n 必须新建一张表"。新表 = 两个实体的主键 + 联系属性,主键是组合键:

借阅(读者编号, ISBN, 借阅日期)
✅ 最终结果(3 张表)
读者(读者编号, 姓名, 电话)
图书(ISBN, 书名, 作者)
借阅(读者编号, ISBN, 借阅日期)
⚠️ 易错提醒

① "借阅日期"必须放在新建的"借阅"表里(不能放在读者表或图书表里)

② 借阅表的主键是 (读者编号, ISBN) 的组合,两个都要标下划线

练习 3.3 ⭐⭐⭐ 进阶 综合转换 · m:n + 1:n

把练习 2.3 的"学生-课程-教师" E-R 图转换成关系模式。

📖 查看答案

转换步骤:

第一步:3 个实体 → 3 个关系模式
学生(学号, 姓名, 年龄)
课程(课程号, 课程名, 学分)
教师(工号, 姓名, 职称)
第二步:处理"选修"(m:n 联系)→ 新建一张表
选修(学号, 课程号, 成绩)
第三步:处理"讲授"(1:n 联系)→ 1 端主键加到 n 端

教师是 1 端,课程是 n 端,所以 工号 加到课程表里:

课程(课程号, 课程名, 学分, 工号
✅ 最终结果(4 张表)
学生(学号, 姓名, 年龄)
课程(课程号, 课程名, 学分, 工号
教师(工号, 姓名, 职称)
选修(学号, 课程号, 成绩)

💡 检查点

① 4 张表对应原 E-R 图的 3 实体 + 1 个 m:n 联系 ✓

② 1:n 联系(讲授)没有新建表,只把"工号"加到课程表里 ✓

③ 所有主码都加了下划线 ✓

🎯 第四部分 · 综合大题15 分钟 · 必考

本部分是 必考综合大题:从需求 → E-R 图 → 关系模式,全流程考查。

综合大题 1 ⭐⭐⭐ 期末重点 商品销售系统

某电商系统的需求如下,请完成:① 画出 E-R 图;② 转换成关系模式(标出主码和外键)。

📋 需求描述
  1. 客户:客户编号、姓名、手机号、地址
  2. 商品:商品编号、商品名、单价、库存
  3. 订单:订单编号、下单时间、订单状态
  4. 一个客户可以下多个订单,一个订单只属于一个客户
  5. 一个订单可以包含多种商品,一种商品也可以出现在多个订单中
  6. 每次订单包含商品时,会有"购买数量"和"成交单价"
📖 查看答案

第一步:分析实体和联系

3 个实体

客户、商品、订单

2 个联系

① 客户 - 订单:"下单",1:n(一个客户多个订单)

② 订单 - 商品:"包含",m:n,有属性"购买数量"、"成交单价"

第二步:画 E-R 图

客户 客户编号 姓名 手机号 地址 下单 1 订单 n 订单编号 下单时间 订单状态 包含 m 购买数量 成交单价 商品 n 商品编号 商品名 单价 库存

商品销售系统的 E-R 图(3 实体 + 2 联系,含 1:n 和 m:n)

第三步:转换成关系模式

3 个实体 → 3 个关系模式
客户(客户编号, 姓名, 手机号, 地址)
订单(订单编号, 下单时间, 订单状态)
商品(商品编号, 商品名, 单价, 库存)
处理"下单"(1:n 联系)→ 把客户编号加到订单表
订单(订单编号, 下单时间, 订单状态, 客户编号
处理"包含"(m:n 联系)→ 新建一张表
包含(订单编号, 商品编号, 购买数量, 成交单价)
✅ 最终结果(4 张表)
客户(客户编号, 姓名, 手机号, 地址)
订单(订单编号, 下单时间, 订单状态, 客户编号
商品(商品编号, 商品名, 单价, 库存)
包含(订单编号, 商品编号, 购买数量, 成交单价)

📌 这就是真实电商数据库的标准设计!

综合大题 2 ⭐⭐⭐ 进阶 医院挂号系统

某医院挂号系统的需求如下,请完成:① 画出 E-R 图;② 转换成关系模式。

📋 需求描述
  1. 患者:身份证号、姓名、性别、年龄
  2. 医生:医生编号、姓名、科室、职称
  3. 一个患者可以挂多个医生的号,一个医生也可以接诊多个患者
  4. 每次挂号会记录 挂号时间诊断结论
📖 查看答案(仅给关系模式,E-R 图请自己画)

分析:

实体和联系

2 个实体:患者、医生

1 个联系:"挂号",m:n,有属性"挂号时间"、"诊断结论"

✅ 转换结果(3 张表)
患者(身份证号, 姓名, 性别, 年龄)
医生(医生编号, 姓名, 科室, 职称)
挂号(身份证号, 医生编号, 挂号时间, 诊断结论)
⚠️ 注意一个细节

"挂号"表的主键这里写成 (身份证号, 医生编号, 挂号时间) 三个属性的组合。

原因:同一个患者可能多次挂同一个医生的号(不同时间),如果只用 (身份证号, 医生编号) 做主键就重复了。所以加上"挂号时间"才能区分。

这是综合大题的进阶考点。简单情况下用两个键的组合就够了。

📝 复习重点回顾

通过本次练习,你应该已经:

⭐ 期末考点排行榜

按照在历年试卷中出现的频率排序:

  1. 综合大题:给一个真实业务场景,画 E-R 图 + 转换关系模式(分值最高,必考!)
  2. 转换关系模式:给 E-R 图,写出关系模式
  3. 三种联系类型判断:选择题
  4. 转换规则辨析:选择题
  5. E-R 图的三大元素:选择题
💡 备考建议

第 13 章是 实操章节必须动笔练,光看不行。考前一周:

① 把"1:1 合并、1:n 加外键、m:n 必须建新表"口诀背熟

② 找 3-5 道综合大题,反复练到能完整画出 E-R 图 + 写出关系模式

③ 注意细节:主码加下划线外键标出来联系属性放对位置